home *** CD-ROM | disk | FTP | other *** search
/ PCMania 30 / PCMania CD30.iso / pcmania / graf30 / tacs / asmutil.asm < prev    next >
Assembly Source File  |  1987-10-06  |  3KB  |  214 lines

  1. memM = 1
  2. ?PLM = 0
  3. ?WIN = 0
  4.  
  5. include cmacros.inc
  6.  
  7. sBegin    DATA
  8. assumes DS,DATA
  9. assumes ES,DATA
  10. sEnd    DATA
  11.  
  12. sBegin    CODE
  13. assumes CS,CODE
  14.  
  15. cProc    tdosAlloc, <PUBLIC>, <bx>
  16.     parmW    numParag
  17. cBegin    tdosAlloc
  18.     mov    bx, numParag
  19.     mov    ah, 48h
  20.     int    21h
  21.     jnc    alloc_ok
  22.  
  23.     xor    ax, ax
  24. alloc_ok:
  25. cEnd
  26.  
  27. cProc    tdosFree, <PUBLIC>, <es>
  28.     parmW    memPtr
  29. cBegin    tdosFree
  30.     mov    es, memPtr
  31.     mov    ah, 49h
  32.     int    21h
  33. cEnd
  34.  
  35. cProc    tlRead, <PUBLIC>, <bx, cx, dx, ds>
  36.     parmW    fileHandle
  37.     parmD    buffPtr
  38.     parmW    buffSize
  39. cBegin    tlRead
  40.     mov    ds, SEG_buffPtr
  41.     mov    dx, OFF_buffPtr
  42.     mov    cx, buffSize
  43.     mov    bx, fileHandle
  44.     mov    ah, 3fh
  45.     int    21h
  46.     jnc    lread_ok
  47.  
  48.     xor    ax, ax
  49. lread_ok:
  50. cEnd
  51.  
  52.  
  53.  
  54. cProc    tsetbuf, <PUBLIC>, <es, di>
  55.     parmD    buff
  56.     parmW    length
  57.     parmW    byte
  58. cBegin    tsetbuf
  59.     mov    es, SEG_buff
  60.     mov    di, OFF_buff
  61.     mov    cx, length
  62.     mov    ax, byte
  63.     rep stosb
  64. cEnd    tsetbuf
  65.  
  66.  
  67. cProc    tscanbuf, <PUBLIC>, <es, di>
  68.     parmD    buff
  69.     parmW    length
  70.     parmW    byte
  71. cBegin    tscanbuf
  72.     mov    es, SEG_buff
  73.     mov    di, OFF_buff
  74.     mov    cx, length
  75.     mov    dx, cx
  76.     mov    ax, byte
  77.     repz scasb
  78.     jz    scan10
  79.     inc    cx
  80. scan10: sub    dx, cx
  81.     mov    ax, dx
  82. cEnd    tscanbuf
  83.  
  84.  
  85. ;
  86. ; long getroom(logical_disk)
  87. ;
  88. cProc    tgetroom, <PUBLIC>
  89.     parmW    logdisk
  90. cBegin    tgetroom
  91.     mov    ah,36H
  92.     mov    dx,logdisk
  93.     int    21H
  94.     mul    cx
  95.     mul    bx
  96. cEnd    tgetroom
  97.  
  98. ;
  99. ; long tdskspac(logical_disk)
  100. ;
  101. cProc    tdskspac, <PUBLIC>
  102.     parmW    logdisk
  103. cBegin    tdskspac
  104.     mov    ah,36H
  105.     mov    dx,logdisk
  106.     int    21H
  107.     mov    dx,0
  108.     cmp    ax,0FFFFH
  109.     je    dsk_out
  110.     mov    bx,dx
  111.     mul    cx
  112.     mul    bx
  113. dsk_out:
  114. cEnd    tdskspac
  115.  
  116. ;
  117. ; char tgetdrv()
  118. ;
  119. cProc    tgetdrv, <PUBLIC>
  120. cBegin    tgetdrv
  121.     mov    ah,19H
  122.     int    21H
  123.     mov    ah,0
  124. cEnd    tgetdrv
  125.  
  126. ;
  127. ; char tchgdrv()
  128. ;
  129. cProc    tchgdrv, <PUBLIC>
  130.     parmW    logdisk
  131. cBegin    tchgdrv
  132.     mov    ah,0EH
  133.     mov    dx,logdisk
  134.     int    21H
  135. cEnd    tchgdrv
  136.  
  137. ;
  138. ; int tgetdir(buffer,drive)
  139. ;
  140. cProc    tgetdir, <PUBLIC,si>
  141.     parmW    buffer
  142.     parmW    drive
  143. cBegin    tgetdir
  144.     mov    ah,47h
  145.     mov    si,buffer
  146.     mov    dx,drive
  147.     int    21h
  148.     mov    ax,0FFFFh
  149.     jc    getd99
  150.     inc    ax
  151. getd99:
  152. cEnd    tgetdir
  153.  
  154. ;
  155. ; int tchgdir(buffer)
  156. ;
  157. cProc    tchgdir, <PUBLIC>
  158.     parmW    buffer
  159. cBegin    tchgdir
  160.     mov    ah,3Bh
  161.     mov    dx,buffer
  162.     int    21h
  163.     mov    ax,0FFFFh
  164.     jc    chgd99
  165.     inc    ax
  166. chgd99:
  167. cEnd    tchgdir
  168.  
  169. cProc    bigcopy <FAR,PUBLIC>,<si,di,ds,es>
  170. parmD    destination
  171. parmD    source
  172. parmD    count
  173. cBegin    bigcopy
  174.     cld            ; count moves up
  175.     mov    cx,OFF_count    ; move the count to the cx register
  176.     mov    di,OFF_destination    ; load the destination register
  177.     mov    ax,SEG_destination
  178.     mov    es,ax
  179.     mov    si,OFF_source        ; load the source
  180.     mov    ax,SEG_source        ;
  181.     mov    ds,ax
  182.     rep    movsb            ; move the string
  183. cEnd    bigcopy    
  184.  
  185.  
  186. ;****************************************************************************;
  187. ;                                                                            ;
  188. ; just like write() call in standard C library, except filename is a         ;
  189. ; 32-bit pointer and buffer length is a 32-bit (long) integer                ;
  190. ;                                                                            ;
  191. ;****************************************************************************;
  192.  
  193. cProc    tlpWrite    <FAR,PUBLIC>,ds
  194. parmW    handle
  195. parmW    oset
  196. parmW    segval
  197. parmW    length
  198.  
  199. cBegin    tlpWrite
  200.     mov    ax, 4000h        ; DOS write call
  201.     mov    bx, handle        ; handle
  202.     mov    dx, oset        ; offset of buffer
  203.     mov    ds, segval        ; segment of buffer
  204.     mov    cx, length        ; low-order part of length
  205.     int    21h
  206.     jnc    wrnoerr
  207.  
  208.     mov    ax, 0ffffh        ; -1 means error
  209. wrnoerr:
  210. cEnd    tlpWrite
  211.  
  212. sEnd
  213. end
  214.